Properties of a channel affect the amount of data that can be handled by the channel. The so-called “Shannon limit” defines the theoretical limit on the amount of data that a channel can carry.
Different techniques have been used to increase the data rate that can be handled by a channel. “Near Shannon Limit Error-Correcting Coding and Decoding: Turbo Codes,” by Berrou et al. ICC, pp 1064-1070, (1993), described a new “turbo code” technique that has revolutionized the field of error correcting codes.
Turbo codes have sufficient randomness to allow reliable communication over the channel at a high data rate near capacity. However, they still retain sufficient structure to allow practical encoding and decoding algorithms. Still, the technique for encoding and decoding turbo codes can be relatively complex.
A standard turbo coder is shown in FIG. 1. A block of k information bits 100 is input directly to a first encoder 102. A k bit interleaver 110 also receives the k bits and interleaves them prior to applying them to a second encoder 104. The second encoder produces an output that has more bits than its input, that is, it is a coder with a rate that is less than 1.
The encoders 102, 104 are also typically recursive convolutional coders.
Three different items are sent over the channel 150: the original k bits 100, first encoded bits 110, and second encoded bits 112.
At the decoding end, two decoders are used: a first constituent decoder 160 and a second constituent decoder 162. Each receives both the original k bits, and one of the encoded portions 110, 112. Each decoder sends likelihood estimates of the decoded bits to the other decoder. The estimates are used to decode the uncoded information bits as corrupted by the noisy channel.